package com.Hsu.demo.controller;

import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.Date;

/**
 * @author Hsu琛君珩
 * @ClassName:CaptchaController
 * @date 2023-12-12
 * @apiNote
 * @Version: v1.0
 */

@RequestMapping("/admin")
@RestController
public class CaptchaController {
    //这个是从配置文件复制的
    //企业标准：
    //常量定义：key：全部大写，单词之间用下划线分隔 value：通常是小写，以下划线分隔，但这里特殊
    private static final String KAPTCHA_SESSION_KEY = "HOME_KAPTCHA_SESSION_KEY";
    private static final String KAPTCHA_SESSION_DATE = "HOME_KAPTCHA_SESSION_DATE";
    //验证码的有效时间，这里是以毫秒为单位，上限是60s
    private static final Long SESSION_TIMEOUT = 60 * 1000L;
    //验证成功：true
    //验证失败：false

    /**
     * 1.从session中获取到生成的验证码
     * 2.比对前端传递的验证码和session中存储的是否一致
     *
     * @param captcha
     * @param session
     * @return
     */
    @RequestMapping("/check")
    public Boolean check(String captcha, HttpSession session) {
        System.out.println("开始时间");
        if (!StringUtils.hasLength(captcha)) {
            return false;
        }
        //从session中获取验证码
        String saveCaptcha = (String) session.getAttribute(KAPTCHA_SESSION_KEY);
        Date saveData = (Date) session.getAttribute(KAPTCHA_SESSION_DATE);
        //比对验证码
        if (captcha.equals(saveCaptcha)) {
            //比对日期
            if (saveData == null || System.currentTimeMillis() - saveData.getTime() < SESSION_TIMEOUT) {
                return true;
            }
        }
        return false;
    }
}
